using System;
using System.Xml;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Collections.Generic;

namespace GalaxyZoo.Client.Model
{
    [DataContract]
    [XmlType(AnonymousType = true)]
    [XmlRoot(IsNullable = false, ElementName="metadata", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
    public class Metadata : AbstractGalaxyZooObject
    {
        /// <summary>
        /// Gets/Set the Description property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="description", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public string Description { get; set; }

        /// <summary>
        /// Gets/Set the ImageId property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="image_id", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public string ImageId { get; set; }

        /// <summary>
        /// Gets/Set the InstrumentId property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="instrument_id", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int InstrumentId { get; set; }

        /// <summary>
        /// Gets/Set the LatitudeCenter property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="latitude_center", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LatitudeCenter { get; set; }

        /// <summary>
        /// Gets/Set the LatitudeMax property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="latitude_max", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LatitudeMax { get; set; }

        /// <summary>
        /// Gets/Set the LatitudeMin property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="latitude_min", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LatitudeMin { get; set; }

        /// <summary>
        /// Gets/Set the LongitudeCenter property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="longitude_center", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LongitudeCenter { get; set; }

        /// <summary>
        /// Gets/Set the LongitudeMax property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="longitude_max", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LongitudeMax { get; set; }

        /// <summary>
        /// Gets/Set the LongitudeMin property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="longitude_min", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double LongitudeMin { get; set; }

        /// <summary>
        /// Gets/Set the MapResolution property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="map_resolution", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public double MapResolution { get; set; }

        /// <summary>
        /// Gets/Set the MaxTileX property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="max_tile_x", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int MaxTileX { get; set; }

        /// <summary>
        /// Gets/Set the MaxTileY property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="max_tile_y", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int MaxTileY { get; set; }

        /// <summary>
        /// Gets/Set the RegionId property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="region_id", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int RegionId { get; set; }

        /// <summary>
        /// Gets/Set the X property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="x", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int X { get; set; }

        /// <summary>
        /// Gets/Set the Y property.
        /// </summary>
        [DataMember]
        [XmlElement(ElementName="y", Namespace="http://schemas.datacontract.org/2004/07/GalaxyZooMVC.Models")]
        public int Y { get; set; }
    }
}
